package com.likeycy.my.set;

/**
 * @ClassName: MySet
 * @Description: TODO
 * @Author: sodagreen
 * @Date: 2021/3/24 23:12
 * @Version: 1.0
 */
public interface MySet<E> {
    /**
     * 获取集合长度
     * @return
     */
    int size();

    /**
     * 判断集合是否为空
     * @return
     */
    boolean isEmpty();

    /**
     * 清空集合
     */
    void clear();

    /**
     * 根据指定元素在集合内查找是否存在
     * @param element
     * @return
     */
    boolean contains(E element);

    /**
     * 添加集合元素
     * @param element
     */
    void add(E element);

    /**
     * 删除集合元素
     * @param element
     */
    void remove(E element);

    /**
     * 遍历集合元素
     * @param visitor
     */
    void traversal(Visitor<E> visitor);


    abstract class Visitor<E>{
        boolean stop;
        public abstract boolean visit(E element);
    }
}
